// 负责管理所有的自定义指令

/**
 * 当图片加载失败时，使用自定义指令给其赋值默认图片
 */
export const imgerror = {
    // 当被绑定的元素插入dom中时
    inserted: (dom, options) => {
        // dom表示当前指令作用的dom对象
        // 如果图片有地址，则用其地址，否则直接用我们设置的默认图片
        dom.src = dom.src || options.value
        // 当图片有地址，但加载失败时会触发图片的 onerror 事件，并在里面将其赋值为我们设置的默认图片
        dom.onerror = function() {
            dom.src = options.value
        }
    },
    // 当组件更新后时
    componentUpdated(dom, options) {
        dom.src = dom.src || options.value
    }
}

/**
 * 使用自定义指令来控制按钮权限
 */
export const permission = {
    // 当被绑定的元素插入dom中时
    inserted: (dom, options, vnode) => {
        // vnode.context就是元素所在组件的this
        const userInfo = vnode.context.$store.getters.userInfo
        if(userInfo.roles && userInfo.roles.points) {
            // 检查该员工是否拥有该功能权限点（删除、添加等功能权限）
            const has = userInfo.roles.points.includes(options.value)
            if(!has) {
                // 没有该权限则让该按钮隐藏
                dom.style.display = 'none'
            }
        }
    }
}
